package evemanutool.data.cache; import java.util.ArrayList; import java.util.Date; import com.beimin.eveapi.shared.wallet.transactions.ApiWalletTransaction; import evemanutool.constants.DBConstants; import evemanutool.utils.file.Parsable; import evemanutool.utils.file.ParseTools; public class WalletTransactionEntry implements Parsable<WalletTransactionEntry>, Comparable<WalletTransactionEntry>, DBConstants { private long refId; private Date date; private double price; private int quantity; private int typeId; private CharacterEntry character; private CharacterEntry client; private long stationId; private String stationName; public WalletTransactionEntry() {} public WalletTransactionEntry(long refId, Date date, double price, int quantity, int typeId, CharacterEntry character, CharacterEntry client, long stationId, String stationName) { this.refId = refId; this.date = date; this.price = price; this.quantity = quantity; this.typeId = typeId; this.character = character; this.client = client; this.stationId = stationId; this.stationName = stationName; } public WalletTransactionEntry(ApiWalletTransaction w) { refId = w.getTransactionID(); date = w.getTransactionDateTime(); price = w.getPrice(); quantity = w.getQuantity(); typeId = w.getTypeID(); character = new CharacterEntry(w.getCharacterID(), w.getCharacterName()); client = new CharacterEntry(w.getClientID(), w.getClientName()); stationId = w.getStationID(); stationName = w.getStationName(); } public long getRefId() { return refId; } public void setRefId(long refID) { this.refId = refID; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getQuantity() { return quantity; } public void setQuantity(int quantity) { this.quantity = quantity; } public int getTypeId() { return typeId; } public void setTypeId(int typeId) { this.typeId = typeId; } public CharacterEntry getCharacter() { return character; } public void setCharacter(CharacterEntry character) { this.character = character; } public CharacterEntry getClient() { return client; } public void setClient(CharacterEntry client) { this.client = client; } public long getStationId() { return stationId; } public void setStationId(long stationId) { this.stationId = stationId; } public String getStationName() { return stationName; } public void setStationName(String stationName) { this.stationName = stationName; } @Override public boolean equals(Object obj) { if (obj instanceof WalletTransactionEntry) { return getRefId() == ((WalletTransactionEntry) obj).getRefId(); } return false; } @Override public int hashCode() { return (int) getRefId(); } @Override public int compareTo(WalletTransactionEntry o) { //Negate standard sort order => Latest first. return -Long.compare(getDate().getTime(), o.getDate().getTime()); } @Override public String toParseString() { ArrayList<Object> ss = new ArrayList<>(); ss.add(getRefId()); ss.add(getDate().getTime()); ss.add(getPrice()); ss.add(getQuantity()); ss.add(getTypeId()); ss.add(getCharacter().toParseString()); ss.add(getClient().toParseString()); ss.add(getStationId()); ss.add(getStationName()); return ParseTools.join(ss, LEVEL2_DELIM); } @Override public WalletTransactionEntry fromParseString(String s) { String[] ss = s.split(LEVEL2_DELIM, -1); setRefId(Long.parseLong(ss[0])); setDate(new Date(Long.parseLong(ss[1]))); setPrice(Double.parseDouble(ss[2])); setQuantity(Integer.parseInt(ss[3])); setTypeId(Integer.parseInt(ss[4])); setCharacter(new CharacterEntry().fromParseString(ss[5])); setClient(new CharacterEntry().fromParseString(ss[6])); setStationId(Integer.parseInt(ss[7])); setStationName(ss[8]); return this; } }